// Copyright Epic Games, Inc. All Rights Reserved.

#pragma once

// 防止头文件重复包含

#include "Engine/DataAsset.h"

// 包含数据资产基类

#include "LyraAimSensitivityData.generated.h"

// UE代码生成头文件

enum class ELyraGamepadSensitivity : uint8;

// 前向声明游戏手柄灵敏度枚举

class UObject;

// 前向声明UObject类

/** 定义一组游戏手柄灵敏度到浮点值的映射 */
UCLASS(BlueprintType, Const, Meta = (DisplayName = "Lyra Aim Sensitivity Data", ShortTooltip = "Data asset used to define a map of Gamepad Sensitivty to a float value."))
// UCLASS宏参数说明：
// - BlueprintType: 可在蓝图中使用
// - Const: 表示常量类
// - DisplayName: 在编辑器中显示的名称
// - ShortTooltip: 简短工具提示
class LYRAGAME_API ULyraAimSensitivityData : public UPrimaryDataAsset
// 继承自主数据资产，支持资源管理和引用
{
	GENERATED_BODY()

public:
	// 构造函数
	ULyraAimSensitivityData(const FObjectInitializer& ObjectInitializer);
	
	// 将灵敏度枚举转换为浮点值
	const float SensitivtyEnumToFloat(const ELyraGamepadSensitivity InSensitivity) const;
	
protected:
	/** 灵敏度映射设置到对应浮点值的映射表 */
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	// UPROPERTY宏参数：
	// - EditAnywhere: 在任何地方可编辑
	// - BlueprintReadWrite: 在蓝图中可读写
	TMap<ELyraGamepadSensitivity, float> SensitivityMap;
	// 使用TMap存储枚举到浮点值的映射
};